<?php
class FormValidation
{
	public function isUsernameValid($username)
	{
		// ReqEx för att kontrollera användarnamnet.
		// Kontrollerar längden på användarnamnet
		// Och att det innehåller tillåtna tecken.
		$namePattern = "/^[a-z0-9_\-]{6,30}$/i";

		if(!preg_match($namePattern, $username))
		{
			return false;
		}

		return $username;
	}

	public function isPasswordValid($password)
	{
		// RegXP för att kontrollera lösenord.
		// Kontrollerar längden och tillåtna tecken.
		// Allt förutom 'space'-tecken
		$passwordPattern = "/^.{6,20}$/i";

		if(!preg_match($passwordPattern, $password))
		{
			return false;
		}
			
		return sha1($password);
	}

	public function isNoteNameValid($noteName)
	{
		$noteNamePattern = "/^[\wåäöÅÄÖ0-9\s\?\!\.\,\-]{6,30}$/i";

		if(!preg_match($noteNamePattern, $noteName))
		{
			return false;
		}
	
		return $noteName;
	}

	public function isNoteContentValid($noteContent)
	{
		$noteContentPattern = "/^[\wåäöÅÄÖ0-9\s\?\!\.\,\@\-]{6,400}$/i";

		if(!preg_match($noteContentPattern, $noteContent))
		{
			return false;
		}
	
		return $noteContent;
	}

	public function isEmailValid($email)
	{
		// RegExp för att kontrollerar epostaddressen.
		$emailPattern = "/^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/";

		if(!preg_match($emailPattern, $email))
		{
			return false;
		}

		return true;
	}

	public function isSSNValid($SSnr)
	{
		// Kontrollerar personnummer.
		$SSNrPattern = "/^([0-9]{6}|[0-9]{8})-[0-9]{4}$/";

		if(!preg_match($SSNrPattern, $SSnr))
		{
			return false;
		}
			
		return true;
	}
		
	public function getForumText($text)
	{
		return htmlentities($text);
	}

	public function storeXHTML($text)
	{
		return mysql_real_escape_string($text);
	}

	public function test()
	{
		// Test för användarnamn.
		if ($this->isUsernameValid("Hej") == true)
		{
			echo "FormValidation::isUsernameValid Användarnamnet kunde inte valideras";
			return false;
		}

		// Test for lösenord.
		if($this->isPasswordValid("Magnus") == false)
		{
			echo "FormValidation::isPasswordValid Lösenord kunde inte valideras";
			return false;
		}

		// Test av emailaddress.
		if($this->isEmailValid("hejsan@dzemo.se") == false)
		{
			echo "FormValidation::isEmailValid E-Post kunde inte valideras";
			return false;
		}
			
		// Test av HTML-kod.
		if($this->getForumText("<span id='hej'>Duvet</span") == false)
		{
			echo "FormValidation::getForumText XHTML kod kunde inte valideras";
			return false;
		}
			
		// Test av Javascript-kod.
		if ($this->getForumText("<script>alert('hej');</script>") == false)
		{
			echo "FormValidation::getForumText Javascript kod kunde inte valideras";
			return false;
		}

		// Test av SSNr
		if($this->isSSNValid("900521-2930") == false)
		{
			echo "FormValidation::isSSNValidSSnr kunde inte valideras";
			return false;
		}
		
		// Test av notename
		if ($this->isNoteNameValid("") == true)
		{
			echo "FormValidation::isNoteNameValid validerade en tom-sträng";
			return false;
		}
		
		// Notenam med 4 tecken
		if ($this->isNoteNameValid("hejs") == true)
		{
			echo "FormValidation::isNoteNameValid validerade med fyra tecken.";
			return false;
		}
		
		// Notename som ska gå igenom
		if ($this->isNoteNameValid("hejsan") == false)
		{
			echo "FormValidation::isNoteNameValid validera 'hejsan' som fel.";
			return false;
		}
		
		
		// Test av notecontent
			
		// Test lyckas.
		return true;
	}
}